package com.kmxd.ams.client.system.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.write.style.*;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 用户表
 *
 * @author admin
 * @since 2022-03-24
 */
@Data
@ColumnWidth(15)
@HeadRowHeight(15)
@ContentRowHeight(15)
@HeadStyle
@HeadFontStyle(fontHeightInPoints = 12)
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER)
@ContentFontStyle(fontHeightInPoints = 10)
@ExcelIgnoreUnannotated
public class SysUserListVO implements Serializable {

  private static final long serialVersionUID = 1L;

  /** 主键ID */
  @TableId(type = IdType.ASSIGN_ID)
  @JsonSerialize(using = ToStringSerializer.class)
  private Long id;

  /** 昵称 */
  private String nickname;

  /** 姓名 */
  private String realname;

  /** 英文名 */
  private String englishName;

  /** 账号 */
  private String account;

  /** 手机号 */
  private String phone;

  /** 性别 1男；2女；3未知 */
  private String sex;

  /** 生日 */
  private Date birthday;

  /** 密码 加密后的密码 */
  @JsonIgnore private String password;

  /** 修改密码标记 0未修改；1已修改 */
  @JsonIgnore private String pswModified;

  /** 密码最后更改时间 */
  private Date pwdUptime;

  /** 证件类型，身份证，警官证 */
  private String certificateType;

  /** 证件地址 */
  private String certificateAddress;

  /** 查阅类型 */
  private String refrenceType;

  /** 工作单位 */
  private String workUnit;

  /** 证书单位 */
  private String certificateUnit;

  /** 证书号码 */
  private String certificateNumber;

  /** 文化程度 */
  private String educationDegree;

  /** 人员类别 */
  private String personnelType;

  /** 登记人 */
  private String registrar;

  /** 预约状态(0预约中，1已登记) */
  private String reservationStatus;

  /** 查档类别 */
  private String filingType;

  /** 查档方式 */
  private String filingMode;

  /** 目的说明 */
  private String purposeDescription;

  /** 查档目的 */
  private String purposeArhiving;

  /** 查档范围 */
  private String scopeArchiving;

  /** 登陆卡号 */
  private String cardId;

  /** 老系统用户id */
  private Long oldUserId;

  /** 来访人数 */
  @JsonSerialize(using = ToStringSerializer.class)
  private Integer visitorNumber;

  /** 登陆时限 */
  private Date loginAuthority;

  /** 原文浏览 1:有权限访问电子文件；0:没权限访问 */
  @JsonSerialize(using = ToStringSerializer.class)
  private Integer textBrowsing;

  /** 来访时间 */
  private Date visitorTime;

  /** 预约方式 */
  private String reservationMethod;

  /** 利用次数 */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long useNum;

  /** 登录次数 */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long loginNum;

  /** 锁定标记 0正常；1锁定 */
  @JsonSerialize(using = ToStringSerializer.class)
  private int lockFlag;

  /** 用户类型 0常规用户；1临时用户;2兼职用户; */
  @JsonSerialize(using = ToStringSerializer.class)
  private int userType;

  /** 状态 0正常；1停用 */
  @JsonSerialize(using = ToStringSerializer.class)
  private int status;

  /** 开始时间 */
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private Date startTime;

  /** 结束时间 */
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private Date endTime;

  /** 备注 */
  private String remarks;

  /** 创建人 */
  @TableField(fill = FieldFill.INSERT)
  @JsonSerialize(using = ToStringSerializer.class)
  private Long createBy;

  /** 创建时间 */
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @TableField(fill = FieldFill.INSERT)
  private Date createTime;

  /** 更新人 */
  @TableField(fill = FieldFill.UPDATE)
  @JsonSerialize(using = ToStringSerializer.class)
  private Long updateBy;

  /** 用户评价 1已经评价 0未评价 */
  private String userEvaluation;

  /** 更新时间 */
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @TableField(fill = FieldFill.UPDATE)
  private Date updateTime;

  /** 登录mac限制 */
  private String limitMac;

  /** 开启mac地址限制0未开启，1开启 */
  @JsonSerialize(using = ToStringSerializer.class)
  private int haveMacLimit;

  /** 部门ID */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long deptId;

  /** 岗位组 */
  private List<String> postIds;

  /** 角色组 */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long roleIds;
}
